﻿using System;
using System.Data.Entity.ModelConfiguration;
using SMS.Domain.Entities;

namespace SMS.Domain.Concrete.Mapping
{
    class RespuestaEntityTypeConfiguration : EntityTypeConfiguration<Respuesta>
    {
        public RespuestaEntityTypeConfiguration()
        {
            this.ToTable("Respuestas");
            /*Indicamos la relación one-to-many dentro de la misma clase de Respuesta. Para poder utilizarla, ha sido 
             * necesario crear dos propiedades de navegación:            
             * - public virtual ICollection<Respuesta> Padre. Representa al tipo de relación Many.
             * - public virtual Respuesta RespuestaPadre { get; set; }. Representa al tipo de relación One.
             * Para crear la relación se le indica a la clase respuesta que va a tener una relación con la propiedad 
             * de navegación padre(Representa la relación Many ), la cual es opcional con la clase Respuesta. Por último 
             * se indica el campo que las relaciona.*/
            this.HasMany(pa => pa.Padre)
                .WithOptional(re=>re.RespuestaPadre)
                .HasForeignKey(pai=>pai.PadreId);
        }
    }
}
